home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1998 March / Macworld (1998-03) (Disk 1).dmg / Shareware World / Info / For Developers / GhostScript 5.10 / MacGS-510 / files / pdf2dsc.ps < prev    next >
Text File  |  1997-07-19  |  4KB  |  121 lines

  1. %    Copyright (C) 1994, 1995, 1996, 1997 Aladdin Enterprises.  All rights reserved.
  2. % This file is part of Aladdin Ghostscript.
  3. % Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND.  No author
  4. % or distributor accepts any responsibility for the consequences of using it,
  5. % or for whether it serves any particular purpose or works at all, unless he
  6. % or she says so in writing.  Refer to the Aladdin Ghostscript Free Public
  7. % License (the "License") for full details.
  8. % Every copy of Aladdin Ghostscript must include a copy of the License,
  9. % normally in a plain ASCII text file named PUBLIC.  The License grants you
  10. % the right to copy, modify and redistribute Aladdin Ghostscript, but only
  11. % under certain conditions described in the License.  Among other things, the
  12. % License requires that the copyright notice and this notice be preserved on
  13. % all copies.
  14.  
  15. % pdf2dsc.ps
  16. % read pdf file and produce DSC "index" file.
  17. %
  18. % Input  file is named PDFname
  19. % Output file is named DSCname
  20. %
  21. % Run using:
  22. %  gs -dNODISPLAY -sPDFname=pdffilename -sDSCname=tempfilename pdf2dsc.ps
  23. % Then display the PDF file with
  24. %  gs tempfilename
  25. %
  26. % Modified by Johannes Plass <plass@dipmza.physik.uni-mainz.de> 1996-11-05:
  27. %    Adds BoundingBox and Orientation if available.
  28. % Modified by rjl/lpd 9/19/96
  29. %    Updates for compatibility with modified pdf_*.ps code for handling
  30. %      page ranges (i.e., partial files) better.
  31. % Modified by Geoff Keating <Geoff.Keating@anu.edu.au> 7/3/96:
  32. %    include Title and CreationDate DSC comments (these are displayed by
  33. %      Ghostview);
  34. %    reduce the size of typical output files by a factor of about 3.
  35. % Modified by L. Peter Deutsch 3/18/96:
  36. %    Removes unnecessary and error-prone code duplicated from pdf_main.ps
  37. % Modified by L. Peter Deutsch for GS 3.33
  38. % Originally by Russell Lang  1995-04-26
  39.  
  40. /DSCfile DSCname (w) file def
  41. /DSCstring 255 string def
  42.    GS_PDF_ProcSet begin
  43.    pdfdict begin
  44.    PDFname (r) file
  45.    pdfopen begin
  46. % setup for loop  (init increment limit)
  47.    /FirstPage where { pop FirstPage } { 1 } ifelse
  48.    1
  49.    /LastPage where { pop LastPage } { pdfpagecount } ifelse
  50. % write header and prolog
  51. DSCfile (%!PS-Adobe-3.0\n) writestring
  52. Trailer /Info knownoget
  53.  {
  54.    dup /Title knownoget
  55.     {
  56.       DSCfile (%%Title: ) writestring
  57.       DSCfile exch write==
  58.     }
  59.    if
  60.    /CreationDate knownoget
  61.     {
  62.       DSCfile (%%CreationDate: ) writestring
  63.       DSCfile exch write==
  64.     }
  65.    if
  66.  }
  67. if
  68. DSCfile (%%Pages: ) writestring
  69. DSCfile 1 index 3 index sub 1 add DSCstring cvs writestring
  70. DSCfile (\n%%EndComments\n) writestring
  71. DSCfile (%%BeginProlog\n) writestring
  72. DSCfile (/Page null def\n/Page# 0 def\n/PDFSave null def\n/DSCPageCount 0 def\n) writestring
  73. DSCfile (/DoPDFPage {dup /Page# exch store pdfgetpage pdfshowpage } def\n) writestring
  74. DSCfile (GS_PDF_ProcSet begin\npdfdict begin\n) writestring
  75. DSCfile (%%EndProlog\n) writestring
  76. DSCfile (%%BeginSetup\n) writestring
  77. DSCfile PDFname write==only
  78. DSCfile ( \(r\) file pdfopen begin\n) writestring
  79. DSCfile (%%EndSetup\n) writestring
  80. % process each page
  81.     {
  82. DSCfile (%%Page: ) writestring
  83. DSCfile 1 index DSCstring cvs writestring
  84. DSCfile ( ) writestring
  85. DSCfile 1 index DSCstring cvs writestring
  86. DSCfile (\n) writestring
  87.  
  88. %BEGIN ##jp##
  89. dup pdfgetpage /CropBox knownoget { % file maxpage pageno cropbox
  90.   DSCfile (%%PageBoundingBox: ) writestring
  91.   {DSCfile exch write=only DSCfile ( ) writestring} forall
  92.   DSCfile (\n) writestring
  93. } if
  94. dup pdfgetpage /Rotate knownoget { % file maxpage pageno angle
  95.   DSCfile (%%PageOrientation: ) writestring
  96.   90 div cvi 4 mod dup 0 lt {4 add} if
  97.   [(Portrait) (Landscape) (UpsideDown) (Seascape)] exch get
  98.   DSCfile exch writestring
  99.   DSCfile (\n) writestring
  100. } if
  101. %END ##jp##
  102.  
  103. DSCfile exch DSCstring cvs writestring
  104. DSCfile ( DoPDFPage\n) writestring
  105.     } for
  106.    currentdict pdfclose
  107.    end
  108.    end
  109.    end
  110. % write trailer
  111. DSCfile (%%Trailer\n) writestring
  112. DSCfile (currentdict pdfclose\nend\nend\nend\n) writestring
  113. DSCfile (%%EOF\n) writestring
  114. % close output file and exit
  115. DSCfile closefile
  116. quit
  117. % end of pdf2dsc.ps
  118.